﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Libreria.SICOM.Modelo;
using System.Configuration;
using Libreria.SICOM.Negocio;
using Web.SICOM.Models;

namespace Web.SICOM.Controllers
{
    public class TipodeMuestraController : Controller
    {
        //
        // GET: /TipodeMuestra/

        public ActionResult Index()
        {
            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }

            TipodeMuestraNegocio tipombo = new TipodeMuestraNegocio();
            ViewData.Model = tipombo.consultarTiposdeMuestra(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            if (((List<TipodeMuestra>)ViewData.Model).Count == 0)
            {
                ViewData.Model = "No Hay Datos Asociados";

            }
            return View();
        }
        public ActionResult Crear()
        {
            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }
            return View();
        }

        [HttpPost]
        public ActionResult Insertar(TipodeMuestra tipodemuestra)
        {
            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
            List<TipodeMuestra> tiposdemuestra = new TipodeMuestraNegocio().consultarTiposdeMuestra(cdc);
            for (int i = 0; i <= tiposdemuestra.Count - 1; i++)
            {
                if (tiposdemuestra[i].Identificador == tipodemuestra.Identificador)
                {
                    ModelState.AddModelError("Nombre", "El Codigo especificado ya se encuentra en uso.");
                }
                if (tiposdemuestra[i].Nombre == tipodemuestra.Nombre)
                {
                    ModelState.AddModelError("Nombre", "El Nombre especificado ya se encuentra en uso.");
                }
            }
         
            if (!ModelState.IsValid)
            {
                TipodeLugarNegocio tipolbo = new TipodeLugarNegocio();
                ViewData.Model = tipolbo.consultarTiposdeLugar(cdc);
                return View("Crear", tipodemuestra);
            }

          
            Int32? id = tipodemuestra.Identificador;
            String nametipomuestra = tipodemuestra.Nombre;
            new TipodeMuestraNegocio().crearTipodeMuestra(id, nametipomuestra, null, cdc);
            return RedirectToAction("Index");
        }

        public ActionResult Editar(Int32? id)
        {
            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }
            ViewData.Model = new TipodeMuestraNegocio().consultarPorIdentificador(id, ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Actualizar(TipodeMuestra tipomuestra)
        {
            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
            Int32? id = tipomuestra.Identificador;
            String nametipomuestra = tipomuestra.Nombre;
            String foto = tipomuestra.Foto;
            if (!ModelState.IsValid)
            {
                return View("Editar", tipomuestra);
            }
            new TipodeMuestraNegocio().actualizarTipodeMuestra(id, nametipomuestra, foto, ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            return RedirectToAction("Index");
        }

        public ActionResult Eliminar(TipodeMuestra tipomuestra)
        {
            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }

            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
            Int32? id = tipomuestra.Identificador;
            List<Muestra> listademuestras = new List<Muestra>();
            Muestra muestra = new Muestra(cdc);
            muestra.Identificador = null;
            muestra.Idtipodemuestra = id;
            muestra.Iddeproyecto = null;
            muestra.Iddelugar = null;
            muestra.Fechadecaptura = DateTime.MinValue;
            muestra.Codigoderesponsable = null;
            muestra.Mac = null;
            muestra.Iddeequipo = null;
            muestra.Iddevariable = null;
            muestra.Valor = null;
            listademuestras = muestra.consultar();
            if (listademuestras.Count == 0)
            {
                new TipodeMuestraNegocio().eliminarTipodeMuestra(id, cdc);
                return RedirectToAction("Index");
            }
            ModelState.AddModelError("Identificador", " No se puede eliminar el Tipo de Lugar especificado, se encuentra en uso.");
            ViewData.Model = new TipodeMuestraNegocio().consultarTiposdeMuestra(cdc);
            return View("Index", ViewData.Model);
        }


        public ActionResult FormFileupload(TipodeMuestra idtipodemuestra)
        {
            Int32? id = idtipodemuestra.Identificador;
            @ViewData["id"] = id;
            return View(ViewData);
        }

        [HttpPost]
        public ActionResult UploadFile(HttpPostedFileBase hidFileID, int? idtipomuestra)
        {
            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
            //var tipofoto = Path.GetFileName(hidFileID.ContentType);
            string[] fototemporal = hidFileID.FileName.Split('.');
            String foto = idtipomuestra + "." + fototemporal[1];
            var path = Path.Combine(Server.MapPath("~/Content/img/tipomuestra"), foto);

            TipodeMuestra tipodemuestra = new TipodeMuestraNegocio().consultarPorIdentificador(idtipomuestra, cdc);
            if (tipodemuestra.Foto != null)
            {
                System.IO.File.Delete(Server.MapPath("~/Content/img/tipomuestra/") + tipodemuestra.Foto);
            }
            tipodemuestra.Foto = foto;

            new TipodeMuestraNegocio().actualizarTipodeMuestra(idtipomuestra,tipodemuestra.Nombre,tipodemuestra.Foto,cdc); 
            Imagen imagenmod = new Imagen();
            var resizedImage = imagenmod.ResizeImage(hidFileID, new Size(40, 38));
            imagenmod.SaveImage(resizedImage, path);

            return RedirectToAction("Index");
        }
    }


}
